查看原文
其他

移动测试 Appium源码初探

苦叶子 开源优测 2022-11-13

点击上方蓝字“开源优测”一起玩耍

声明
        本公众号所有内容,均属微信公众号: 开源优测  所有,任何媒体、网站或个人未经授权不得转载、链接、转贴或以其他方式复制发布/发表。已经本公众号协议授权的媒体、网站,在使用时必须注明"稿件来源微信公众号:开源优测",违者本公众号将依法追究责任。

移动测试 Appium源码初探

介绍

Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用。

“移动原生应用”是指那些用 iOS 或者 Android SDK 写的应用。

“移动 web 应用”是指使用移动浏览器访问的应用(Appium 支持 iOS 上的 Safari 和 Android 上的 Chrome)。

“混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。

文档

首先我们先看下Appium的官方文档地址:

入门手册:http://appium.io/tutorial.html

中文文档:http://appium.io/slate/cn/master/

安装

Appium支持各种语言的类库驱动来做移动端自动化测试,这些类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON 格式selenium命令以及额外的移动设备控制相关的命令,如多点触控手势和屏幕朝向。

Appium客户端类库实现了Mobile JSON Wire Protocol(一个标准协议的官方扩展草稿)和W3C Webdriver spec(一个传输不可预知的自动化协议,该协议定义了MultiAction 接口)的元素。

下面我们看下如何安装Python版的驱动类库:

python pip 环境不会弄?参见这:[快学Python3]环境安装

使用pip命令来安装:

pip install Appium-Python-Client

通过git来安装:

git clone git@github.com:appium/python-client.git cd python-client python setup.py install

不管是哪种方式,安装完成后在你的python安装目录,以笔者的为例(笔者为Python3.6,安装在C:\Python36目录下),你可以在以下目录找到已经安装的Appium-Python-Client的源码:

C:\Python36\Lib\site-packages\appium

目录说明

Appium-Python-Client安装好后,其目录结构如下图所示:

appium下一级目录如下图:

common: 用于定义了Appium-Python-Cliennt的通用类,该目录下的exceptions.py定义了content(你可以翻译为上下文环境)异常基类 webdriver: Appium-Python-Client的核心模块,定义了各种错误、命令和方法,后面就这个package进行详解说明 __init__.py: 你懂的,不懂也别找我^_^ saucetestcase.py: 设备枚举和一些初始化、清理功能的实现

下面重点对webdriver这个package进行说明

webdriver

必须注意的时,Appium客户端驱动包是基于json wire protocol实现的,其依赖selenium2中的webdriver,所以在实际是应用Appium-Python-Client时,是需要先安装selenium2的。

下面我们对Appium-Python-Client中最核心的功能package webdriver进行分析说明:

先看下图红色框中的即为webdriver的目录结构:

下面对webdriver下各模块进行说明:

common/mobileby.py:  定义了移动测试端专用的一些定位方法 common/multi_action.py: 定义和实现了如何把移动端操作串起来的方法 common/touch_action.py: 定义和实现了的移动端的一些动作行为 connectiontype.py: 定义了设备连接的类型 errorhandler.py: 定义和实现移动端错误处理类 mobilecommand.py: 定义了移动端json wire protocol的命令 switch_to.py: 定义和实现了移动端web view上下文环境切换类 webdriver.py: 最基础核心的模块,定义和实现了各种常用方法(例如查找、拖曳、滚动等等) webelement.py: 最基础核心的模块,定义和实现了元素常用的方法(例如查找,设置值等等) __init__.py: 你懂的,对外导出了webdrive和webelement模块中的对象



开源优测

分享软件测试开源技术、经验、方案的首发平台

长按二维码/微信扫描 关注开源优测

QQ群:260407012

苦叶子私人微信:liyimin1912

有问题,可留言或加好友进微信群

苦叶子原创文章首发平台



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存